package ar.edu.utn.frsf.tpae.a2012.g01.service.implementacion;

import java.util.Calendar;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import ar.edu.utn.frsf.tpae.a2012.g01.dao.ClienteDao;
import ar.edu.utn.frsf.tpae.a2012.g01.model.Cliente;
import ar.edu.utn.frsf.tpae.a2012.g01.model.Cuenta;
import ar.edu.utn.frsf.tpae.a2012.g01.service.ClienteService;

public class ClienteServiceImpl implements ClienteService {

	private ClienteDao clienteDao;

	// Setter utilizado por Spring.
	@Autowired(required = true)
	public void setClienteDao(ClienteDao clienteDao) {
		this.clienteDao = clienteDao;
	}

	@Override
	public void crear(List<Cliente> clientes) throws Exception {
		Calendar cal = Calendar.getInstance();
		for (Cliente cliente : clientes) {
			if (cliente.getFechaAlta().before(cal.getTime()))
				clienteDao.persistir(cliente);
			else
				throw new Exception();
		}
	}

	/**
	 * Elimina el cliente que se pasa por parametro
	 * 
	 */
	@Override
	public boolean eliminar(Cliente cliente) {
		List<Cuenta> cuentas = cliente.getCuentas();
		if (cuentas != null)
		{
			for (Cuenta c : cuentas)
			{
				if (c.getSaldoActual() != 0)
					return false;
			}
			clienteDao.eliminar(cliente);
			return true;
		}
		clienteDao.eliminar(cliente);
		return true;
	}

	@Override
	public List<Cliente> listar() {
		return clienteDao.listar();
	}
}
